package com.lagou.task15;

import com.lagou.task08.Animal;
import com.lagou.task08.Dog;

import java.util.LinkedList;
import java.util.List;

public class GenericTest {
    public static void main(String[] args) {
        List<String> lt1 = new LinkedList<String>();
        lt1.add("one");
        System.out.println("lt1 = " + lt1);
        System.out.println("---------------------------");

        LinkedList<Integer> integers = new LinkedList<>();
        integers.add(1);
        integers.add(2);
        System.out.println("integers = " + integers);


        //java7开始的新特新：菱形特性
        List<Double> lt3 = new LinkedList<>();

        //笔试考点
//        lt1 = integers;//类型不同


        List<Animal> lst1 = new LinkedList<>();
        List<Dog> lst2 = new LinkedList<>();
//        lst1 = lst2;//类型不一致

        //无限制泛型通配符？

        List<?> lst3 = new LinkedList<>();
        lst3 = lst1;
        //<? exends E>E或者的子类类型
        List<? extends Animal> lst4 = new LinkedList<>();
        lst4= lst2;
//        lst4.add(new Dog());
        lst4.get(0);
        //<? super E>E或者E的父类类型
        List<? super Animal> lst5 = new LinkedList<>();
        lst5=lst1;
        lst5.add(new Dog());
        lst5.get(0);
//        lst5.add(new Animal());//类型不匹配

//        lst3.add(lst1);//lst3匹配所有类型，不确定大小所以不予许添加，防止转换问题

        Object o = lst3.get(0);//支持获取
    }
}
